#ifndef  __HAL_AVR_H__
#define  __HAL_AVR_H__

#include  <ina90.h>
#include  "macros.h"



//----------------------------------------------------------------------------------
//  Macros for simple configuration of IO pins on AVR
//----------------------------------------------------------------------------------
#define IO_CONCAT(a, b)            a ## b
#define IO_CONCAT_EXPANDED(a, b)   IO_CONCAT(a, b)

#define IO_OUTPORT(port)           IO_CONCAT(PORT, port)
#define IO_INPORT(port)            IO_CONCAT(PIN, port)
#define IO_DDRPORT(port)           IO_CONCAT(DDR, port)


#define MCU_IO_INPUT(port,pin)         st(IO_DDRPORT(port) &=~BV(pin);)
#define MCU_IO_OUTPUT(port, pin, val)  st(if(val) \
                                            {IO_OUTPORT(port) |= BV(pin);} \
                                          else \
                                            {IO_OUTPORT(port) &=~BV(pin);} \
                                          IO_DDRPORT(port) |= BV(pin);)\

#define MCU_IO_SET(port, pin)          st(IO_OUTPORT(port)|= BV(pin);)
#define MCU_IO_CLR(port, pin)          st(IO_OUTPORT(port)&=~BV(pin);)
#define MCU_IO_GET(port, pin)          (IO_INPORT(port) & BV(pin))



/**********************************************************************************/
#endif
